/*
* @Author: luocheng
* @Date:   2019-12-15 15:18:33
* @Last Modified by:   luocheng
* @Last Modified time: 2020-01-13 22:26:58
*/
import {HTTP} from '../util/http.js'

// 此处 Classic 继承了 HTTP
class ClassicModel extends HTTP{
	// 获取最新一期期刊
	getLatest(sCallback){
		this.request({
	      url:'classic/latest',
	      success: (res) => {
	        sCallback(res)
	        // 调用设置缓存方法，将期刊号index传递过去
	        this._setLatestIndex(res.index)
	        // 将获取到的最新一期期刊加入缓存
	        let key = this._getKey(res.index)
	        wx.setStorageSync(key, res)
	      }
	    })
	}

	// 根据targetURL获取期刊数据（先缓存再服务器）渲染到页面实现向上下翻页效果
	getClassic(index, targetURL, sCallback){
		// 如果是访问下一期，那么期刊号就应该在当前期刊上加1，访问上一期则相反
		let key = targetURL == 'next' ? this._getKey(index+1) : this._getKey(index-1)
		///////////////////////////////////////
		// 通过key值读取缓存，如果没有，则向服务器发送请求并将数据写入缓存
		// 如果在缓存中找到了数据，则调用sCallback将缓存中的数据返回即可 //
		///////////////////////////////////////
		let classic = wx.getStorageSync(key)
		if (!classic) {
			this.request({
		      // url:'classic/'+ index +'/'+ targetURL,
		      url:`classic/${index}/${targetURL}`,
		      success: (res) => {
		      	wx.setStorageSync(this._getKey(res.index), res)
		        sCallback(res)
		      }
		    })
		} else {
			sCallback(classic)
		}
		
	}
	// 判断是否是第一期，是的话就不能再向右翻页
	isFirst(index){
		return index == 1 ? true : false
	}
	// 判断是否是最新一期，是的话就不能再向左翻页
	isLatest(index){
		let latestIndex = this._getLatestIndex()
		return index == latestIndex ? true : false			
	}
	// 喜欢页面，从服务器我喜欢的书刊的信息
	getMyFavor(success){
		const params = {
			url: 'classic/favor',
			success: success
		}
		this.request(params)
	}
	// 同步设置缓存，保存最新一期期刊号
	// 异步设置缓存使用 wx.setStorage
	_setLatestIndex(index){
		wx.setStorageSync('latest', index)
	}
	// 读取缓存latest的方法
	_getLatestIndex(){
		return wx.getStorageSync('latest')
	}
	// 设置每一期期刊的key值，方便存入缓存，设置方法根据业务需求自定义
	_getKey(index){
		let key = 'classic-' + index
		return key
	}
}
export {ClassicModel}